package com.rede.didiok.user.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rede.didiok.common.dto.user.MedalClassifyDto;
import com.rede.didiok.common.dto.user.MedalDto;
import com.rede.didiok.user.entity.MedalClassifyEntity;
import com.rede.didiok.user.entity.MedalEntity;

/**
 * 勋章表
 *
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-08-13 10:45:33
 */
public interface MedalService extends IService<MedalEntity> {

    /**
     * 获取勋章列表
     *
     * @param medalVO
     * @return
     */
    IPage<MedalEntity> getPageList(MedalDto medalVO);

    /**
     * 获取全部勋章列表
     *
     * @return
     */
    List<MedalEntity> getList();

    /**
     * 新增勋章
     *
     * @param medalVO
     * @return
     */
    String addMedal(MedalDto medalVO);

    /**
     * 编辑勋章
     *
     * @param medalVO
     * @return
     */
    String editMedal(MedalDto medalVO);

    /**
     * 批量删除勋章
     *
     * @param medalVOList
     * @return
     */
    String deleteBatchMedal(List<MedalDto> medalVOList);

    /**
     * 给某人颁发某个勋章
     *
     * @param userUid
     * @param medalUid
     * @return
     */
    void awardMedal(String userUid, String medalUid);


    /**
     * 查询用户最近获取的勋章
     *
     * @param medalVO
     * @return
     */
    MedalEntity getMedalByRecent(MedalDto medalVO);

    /**
     * 查询用户获得的勋章 【按分类划分】
     *
     * @param medalClassifyVO
     * @return
     */
    List<MedalClassifyEntity> getUserMedalList(MedalClassifyDto medalClassifyVO);

    /**
     * 查询用户展示的勋章
     *
     * @param medalVO
     * @return
     */
    List<MedalEntity> getUserShowMedalList(MedalDto medalVO);

    /**
     * 获取所有勋章出现频率
     * @return
     */
    Map<String, String> getAllMedalFrequency();
}

